// 56. 合并区间
// 以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi] 。
// 请你合并所有重叠的区间，并返回 一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间 。

// 示例 1：

// 输入：intervals = [[1,3],[2,6],[8,10],[15,18]]
// 输出：[[1,6],[8,10],[15,18]]
// 解释：区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
// 合并区间后左边界和右边界，作为一个新的区间，加入到result数组里就可以了。
// 如果没有合并就把原区间加入到result数组。
// 思路：左侧排序，然后设置pre和cur，如果无重叠就直接push，并更新区域，如果有重叠，
// 则更新当前右边界
/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
 var merge = function(intervals) {
    intervals.sort((a,b)=>a[0]-b[0]);
    let arr=[];
    let pre=intervals[0];
    for(let i=0;i<intervals.length;i++){
        let cur=intervals[i];
        if(cur[0]>pre[1]){
            arr.push(pre);
            pre=cur;
        }else{
            pre[1]=Math.max(cur[1],pre[1]);
        }
    }
    arr.push(pre);
    return arr;
};